/*
mdu_exe模块是定点浮点和特权指令的执行单元，
执行的指令包括：

R-type  funct7[31:25],         | rs2[24:20],  | rs1[19:15], | funct3[14:12], |rd[11:7],            | opcode[6:0]
I-type  imm[31:20],                           |rs1[19:15],  | funct3[14:12], |rd[11:7],            | opcode[6:0]
S-type  imm[31:25],            | rs2[24:20],  | rs1[19:15], | funct3[14:12], |imm[11:7],           | opcode[6:0]
B-type  imm[31], | imm[30:25]  |, rs2[24:20], | rs1[19:15], | funct3[14:12], |imm[11:8], | imm[7], | opcode[6:0]
U-type  imm[31:12],                                                          | rd[11:7],           | opcode[6:0]
J-type  imm[31], | imm[30:21],     | imm[20], | imm[19:12],                  | rd[11:7],           | opcode[6:0]
----------------------------------------------------------------------
整数乘除运算：R-type
    funct7=0000001 
        opcode=0110011
            funct3 =     MUL 000, MULH 001，MULHSU 010，MULHU 011，DIV 100，DIVU 101，REM 110，REMU 111，

        opcode=0111011
            funct3=      MULW 000，DIVW 100，DIVUW 101，REMW 110，REMUW 111，

----------------------------------------------------------------------
特权指令：I-type
    func7=0001001
        opcode=1110011
            funct3=000 SFENCE.VMA(R-type) ，

        opcode=1110011
            funct3=   CSRRW 001，CSRRS 010，CSRRC 011，CSRRWI 101，CSRRSI 110，CSRRCI 111，

----------------------------------------------------------------------
计算指令：R-type
    funct7=0001101
        FDIV.D，
    funct7=0001100
        FDIV.S，
    funct7=0101101
        FSQRT.D，
    funct7=0101100
        FSQRT.S，
    funct7=0010101
        FMAX.D，
    funct7=0010100
        FAMX.S，
    funct7=0010101
        FMIN.D，
    funct7=0010100
        FMIN.S，

----------------------------------------------------------------------
比较指令：R-type
    FEQ.D，FEQ.S，FLT.D，FLT.S，FLE.D，FLE.S，

----------------------------------------------------------------------
转换指令：R-type
    FSGNJ.D，FSGNJ.S，FSGNJN.D，FSGNJN.S，FSGNJX.D，FSGNJX.S，FCVT.W.S，FCVT.WU,S，FCVT.S.W，FCVT.S.WU，
    FCVT.L.S，FCVT.LU.S，FCVT.S.L，FCVT.S.LU，FCVT.S.D，FCVT.D.S，FCVT.W.D，FCVT.WU.D，FCVT.D.W，
    FCVT.D.WU，FCVT.L.D，FCVT.LU.D，FCVT.D.L，FCVT.D.LU，

----------------------------------------------------------------------
分类指令：R-type
    FCLASS.D，FCLASS.S，

----------------------------------------------------------------------
转移指令：R-type
    FMV.X.W，FMV.W.X，FMV.X.D，FMV.D.X

----------------------------------------------------------------------
设计思路：当保留站将数据准备好后发射给执行单元，单发射，当非流水线多周期指令（例如除法指令，特权指令）执行的时候，阻塞保留站发射相同指令
其他指令不影响
*/

module mdu (
    input    wire    clk            ,
    input    wire    rst_n          ,

    //三个寄存器操作数
    input    [64-1:0]    rs2          ,
    input    [64-1:0]    rs1          ,
    input    [64-1:0]    rd           ,

    //三个功能码
    input    [7-1:0]     funct7       ,
    input    [3-1:0]     funct3       ,
    input    [7-1:0]     opcode       ,
 
    input    [12-1:0]    imm          ,

    input                mdu_exe_valid

);

//根据指令码区分指令类型是I-type还是R-type



endmodule